#include <iostream>
#include <gflags/gflags.h>
//声明命令行参数，gflags库在底层定义这些命令行参数的时候会在声明的参数名前面加上FLAGS_，所以在使用的时候也要在前面加上FLAGS_，比如 FLAGS_ip
DEFINE_string(ip, "127.0.0.1", "这是服务器的监听IP地址，格式：127.0.0.1");
DEFINE_int32(port, 8888, "这是服务器的监听端口，格式：8888");
DEFINE_bool(debug_enable, true, "是否开启调试模式，格式：true/false");

int main(int argc, char* argv[])
{
    //调用gflags框架提供的接口解析命令行参数---解析其实本质上是将命令行参数的值放到加了 FLAGS_参数名 的变量中
    google::ParseCommandLineFlags(&argc, &argv, true);
    //解析完就可以使用对应的命令行参数了
    std::cout << FLAGS_ip << std::endl;
    std::cout << FLAGS_port << std::endl;
    std::cout << FLAGS_debug_enable << std::endl;

    //如果我们不想使用命令行参数的默认值，就可以在启动程序的时候使用 --ip="192.168.1.1" --port=8080 --debug_enable=false的方式指定命令行参数的值
    return 0;
}

